using System;
using System.Collections.Generic;
using System.Text;
using Entidades;
using System.IO;
using System.Collections;

namespace Negocio
{
    public class GerarClassDAOMenfram
    {
        public void gerarNegocio(Hashtable hs, String path, string projeto, string modulo)
        {
            if (!System.IO.Directory.Exists(path+"\\DAO\\")){
                System.IO.Directory.CreateDirectory(path+"\\DAO\\");
            }
            foreach (string key in hs.Keys)
            {
                Hashtable colunas = new Hashtable();
                String nomeClasseEntity = key.Remove(0, 2) + "Entidade";
                String nomeClasse = key.Remove(0, 2) + "DAO";
                String nomeSimples = key.Remove(0, 2) ;
                String nomeTable = key.Insert(2, "_").ToUpper();
                StreamWriter file = File.CreateText(path + "\\DAO\\" + nomeClasse + ".cs");
                UtilsNegocio.geraCabecalho(file, projeto, modulo);
                TabelaEntidades tabela =(TabelaEntidades) hs[key];
                file.WriteLine("using System;");
                file.WriteLine("using System.Collections.Generic;");
                file.WriteLine("using System.Text;");
                file.WriteLine("using System.Data;");
                file.WriteLine("using Comuns"+projeto+"; ");
                file.WriteLine("using Entidades; ");
                file.WriteLine("using Menfram.DAL.Abstract; ");
                file.WriteLine("using System.Collections; ");
                file.WriteLine("");


                file.WriteLine("namespace DAO");
                file.WriteLine("{");
                file.WriteLine("");
                file.WriteLine("    /// <summary>");
                file.WriteLine("    ///  classe de DAO referente a tabela: " + key);
                file.WriteLine("    /// </summary>");
                file.WriteLine("    public class " + nomeClasse + ": AbstractDAO<"+nomeClasseEntity+">");
                file.WriteLine("        {    public override Type getTipo() ");
                file.WriteLine("                  { ");
                file.WriteLine("                     return typeof("+nomeClasseEntity+");");
                file.WriteLine("                   } ");
                file.WriteLine("");
                UtilsNegocio.geraSingleton(file, nomeClasse);
                file.WriteLine("        }");
                file.WriteLine("}");
                file.Flush();
                file.Close();
            }
        }
    }
}
